package com.winit.schedule.task.tracker.runner;

/**
 * 任务执行器
 * 
 * @author jianke.zhang 2015-3-12 下午6:43:40
 * @since 1.0
 */
public interface TaskRunner {

    /**
     * 是否已经处理完内存中所有的数据，在进行队列切换的时候， 必须保证所有内存的数据处理完毕
     * 
     * @return
     */
    public boolean isDealFinishAllData();

    /**
     * 判断进程是否处于休眠状态
     * 
     * @return
     */
    public boolean isSleeping();

    /**
     * 任务 超时
     * 
     * @throws Exception
     */
    public void completeSchedule() throws Exception;

    /**
     * 停止任务处理器
     * 
     * @throws Exception
     */
    public void stopTask(boolean force) throws Exception;

    /**
     * 清除所有已经取到内存中的数据，在心跳线程失败的时候调用，避免数据重复
     */
    public void clearAllHasFetchData();

    public int getThreadNum();
}
